package obstacle;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.util.ArrayList;

import Vue.Terrain;

import reseau.Coordonnees2D;

public class Bergerie extends ObstaclePolygone {

	protected int _compteurDeMouton;
	public Bergerie(ArrayList<Coordonnees2D> sommets, Terrain terrain) {
		super(sommets, ObstacleType.Bergerie,terrain);
		this.setColot(128, 128, 64);
		_compteurDeMouton=0;
	}
	public void incrementCompteur()
	{
		this._compteurDeMouton++;
	}
	public void decrementCompteur()
	{
		this._compteurDeMouton--;
	}
	public int getCompteur()
	{
		return this._compteurDeMouton;
	}
	public boolean tue() {
		// TODO Auto-generated method stub
		return true;
	}
	@Override
	public void display(Graphics2D g) {
		// TODO Auto-generated method stub
		Point leftUp = new Point((int)getSommets().get(0).getX(),(int)getSommets().get(0).getY());
		Point rightDown = new Point(leftUp);
		Polygon polygon = new Polygon();
		polygon.addPoint(leftUp.x, leftUp.y);
		for(int j=1; j<getSommets().size(); j++)
		{
			polygon.addPoint((int)getSommets().get(j).getX(),(int)getSommets().get(j).getY());
			if((int)getSommets().get(j).getX() < leftUp.getX())
			{
				leftUp.x = (int)getSommets().get(j).getX();
			}
			if((int)getSommets().get(j).getY() < leftUp.getY())
			{
				leftUp.y = (int)getSommets().get(j).getY();
			}
			if((int)getSommets().get(j).getX() > rightDown.getX())
			{
				rightDown.x = (int)getSommets().get(j).getX();
			}
			if((int)getSommets().get(j).getY() > rightDown.getY())
			{
				rightDown.y = (int)getSommets().get(j).getY();
			}
		}
		for(int px=leftUp.x; px <= rightDown.x; px++)
		{
			for(int py=leftUp.y; py <= rightDown.y; py++)
			{
				if(polygon.contains(px, py))
				{
					//System.out.println("r:"+obs.getRedValue()+"  g:"+obs.getGreenValue()+"  b:"+obs.getBlueValue());
					//this.setCellState(py, py, obs.getRedValue(), obs.getGreenValue(), obs.getBlueValue());
	    			this._terrain.initBuffer(px, py, 255, 255, 255);					
				}
			}
		}
	}
//	@Override
//	public void display(Graphics2D g) {
//		Polygon polygon =new Polygon();
//		polygon.addPoint((int)this.getSommets().get(0).getX(), (int)this.getSommets().get(0).getX());
//		for(int i=1; i < this.getSommets().size(); i++)
//		{
//			polygon.addPoint((int)this.getSommets().get(i).getX(), (int)this.getSommets().get(i).getY());
//		}
//		g.setColor(new Color(128, 128, 64));
//		g.drawPolygon(polygon);
//	}
}
